home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1983-01-26 | 15.8 KB | 392 lines |
- 10 'COPYRIGHT 1983 DAVIDSON ASSOCIATES
- 20 'ALL RIGHTS RESERVED
- 30 GOSUB 3400: 'INIT FOR COLD START
- 36 L = 1: 'CHAIN ENTRY FROM WORD ATTACK
- 38 GOSUB 3820: 'INSERT DATA DISK
- 40 GOSUB 260: 'INITIALIZE SCREEN
- 70 WHILE B$ <> "Q"
- 80 GOSUB 3150
- 90 LOCATE 23,LEFT-4: PRINT "New line";L;" ";: LOCATE INLINE,LEFT-5: PRINT L;: LOCATE ,LEFT: PRINT CHR$(34);
- 100 LOCATE ,LEFT
- 110 POKE &H417,&H10
- 120 INPUT "", A$: GOSUB 3180
- 130 GOSUB 3090: 'CHECK LENGTH
- 140 IF LEFT$(A$,1) = "." THEN GOSUB 410: COMMAND = TRUE ELSE COMMAND = FALSE
- 150 IF NOT COMMAND AND L < 201 THEN ARRAY$(L) = A$: L = L + 1
- 160 WEND
- 170 COLOR 7,0: CLS: LOCATE 4,3-20*MONO
- 180 PRINT "To re-run WORD ATTACK!, insert the"
- 190 PRINT: LOCATE ,3-20*MONO: PRINT "program diskette, type RUN ";CHR$(34); "ATTACK"
- 200 PRINT: LOCATE ,3-20*MONO:PRINT "and press the ENTER key."
- 210 LOCATE 12,3-20*MONO: PRINT "To re-enter the editor with your": PRINT
- 220 LOCATE ,3-20*MONO: PRINT "file intact, type GOTO 40 and": PRINT
- 230 LOCATE ,3-20*MONO: PRINT "press the ENTER key.": PRINT
- 240 END
- 250 '-----------------------INITIALIZE AND CLEAR----------------------
- 260 COLOR FG,BG: CLS: B$ = "": TRUE = -1: FALSE = 0: LEFT = 6-20*MONO
- 270 I = LEFT - 2: INLINE = 19: ENDD$ = CHR$(174): IF DD=1 THEN DIR$ ="*.*": DD$ = "" ELSE DIR$ = "B:*.*": DD$ = "B:"
- 280 CLEARR$ = STRING$(39-24*MONO,32)
- 290 LINEE$ = STRING$(38-25*MONO,196): NAMEE$=""
- 300 GOSUB 3180
- 310 LOCATE 2,I: PRINT " * * * WORD ATTACK EDITOR * * *"
- 320 LOCATE 4,I: PRINT "Copyright 1983 Davidson & Associates": PRINT
- 330 PRINT: LOCATE ,I: PRINT "The prompt line at the bottom of the"
- 340 PRINT: LOCATE ,I: PRINT "screen displays the editor commands."
- 350 PRINT: LOCATE ,I: PRINT "For help, use the .h command. Use"
- 360 PRINT: LOCATE ,I: PRINT "the ";CHR$(26);" key at the right side of the"
- 370 PRINT: LOCATE ,I: PRINT "keyboard to copy over the quote mark"
- 380 PRINT: LOCATE ,I: PRINT "at the beginning of each line."
- 390 RETURN
- 400 '--------------------CHANGE MODE---------------------------------
- 410 B$ = MID$ (A$,2,1): IF B$ = "" THEN BLANK = TRUE ELSE BLANK = FALSE
- 420 WHILE NOT BLANK
- 430 A= ASC (B$): IF A > 90 THEN B$ = CHR$(A-32)
- 440 IF B$ = "E" THEN GOSUB 570
- 450 IF B$ = "P" THEN GOSUB 820
- 460 IF B$ = "L" THEN GOSUB 1080
- 470 IF B$ = "I" THEN GOSUB 1370
- 480 IF B$ = "D" THEN GOSUB 1630
- 490 IF B$ = "S" THEN GOSUB 1870
- 500 IF B$ = "G" THEN GOSUB 2580
- 510 IF B$ = "C" THEN GOSUB 2960
- 520 IF B$ = "H" THEN GOSUB 3210
- 530 BLANK = TRUE
- 540 WEND
- 550 RETURN
- 560 '-----------------------EDIT LINE--------------------------------
- 570 VALID = TRUE
- 580 IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
- 590 WHILE VALID AND L > 1
- 600 LN = LEN (A$)
- 610 IF LN > 2 THEN E$ = RIGHT$(A$,LN-2)
- 620 LOCATE 25,LEFT-4: PRINT STRING$(38,32);
- 630 IF LN < 3 THEN LOCATE INLINE-1,LEFT+8:INPUT "Edit which line? ",E$
- 640 E$ = LEFT$(E$,4)
- 650 E% = VAL (E$): E = E%
- 660 IF E$ = "" OR E < 1 OR E > L - 1 THEN VALID = FALSE: IF E$ <> "" THEN LOCATE INLINE-1,LEFT+8:PRINT "Invalid line number"
- 670 WHILE VALID
- 680 GOSUB 3180
- 690 IF LEN(ARRAY$(E)) < 34 THEN ARRAY$(E) = ARRAY$(E) + STRING$(34-LEN(ARRAY$(E)),32)
- 700 IF MONO THEN ARRAY$(E) = ARRAY$(E) + STRING$(20,32)
- 710 LOCATE 25,LEFT-4: PRINT STRING$(38,32);
- 720 LOCATE 23,LEFT-4: PRINT "Edit line";E: LOCATE INLINE,LEFT: PRINT CHR$ (34); ARRAY$(E)
- 730 LOCATE INLINE,LEFT-5: PRINT E;: LOCATE ,LEFT: INPUT "",A$: GOSUB 3180
- 740 GOSUB 3090: 'LENGTH CHECK AND SPACES STRIPPER
- 750 ARRAY$(E) = A$
- 760 VALID = FALSE
- 770 WEND: 'VALID LINE NUMBER & NOT FINISHED?
- 780 WEND: 'LINES IN MEMORY?
- 790 GOSUB 3180
- 800 RETURN
- 810 '-----------------------PRINT OUT FILE-------------------------------
- 820 VALID = TRUE: FINISHED = FALSE
- 830 IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
- 840 WHILE VALID AND L > 1 AND NOT FINISHED
- 850 LN = LEN(A$): IF LN > 2 THEN E$ = RIGHT$(A$,LN-2) ELSE E$ = "1"
- 860 E$ = LEFT$(E$,4)
- 870 E% = VAL(E$): E = E%
- 880 IF E < 1 OR E > L-1 THEN VALID = FALSE: LOCATE INLINE-1,LEFT+11:PRINT "Invalid line number"
- 890 WHILE VALID AND NOT FINISHED
- 900 LOCATE 25,LEFT-4: PRINT " ENTER ";
- 910 ON ERROR GOTO 1030
- 920 WHILE E < L AND NOT FINISHED
- 930 LPRINT E;" ";: IF E < 100 THEN LPRINT " ";: IF E < 10 THEN LPRINT " ";
- 940 LOCATE ,6:LPRINT ARRAY$(E): E = E + 1: A$ = INKEY$: IF A$ = CHR$(13) THEN FINISHED = TRUE
- 950 WEND: 'FINISHED?
- 960 ON ERROR GOTO 0
- 970 VALID = FALSE
- 980 WEND: 'VALID LINE NUMBER & NOT FINISHED?
- 990 WEND: 'LINES IN MEMORY?
- 1000 GOSUB 3180
- 1010 RETURN
- 1020 '--------------------------PRINTER ERROR------------------------------
- 1030 RESTORE 1060: ERRNUMBER = 0: FINISHED = TRUE: GOSUB 3180
- 1040 READ ERRNUMBER,ERRMESSAGE$:IF ERR <> ERRNUMBER AND ERRNUMBER <> 99 THEN 1040
- 1050 LOCATE INLINE,LEFT+1: PRINT ERRMESSAGE$: GOSUB 3180: RESUME 950
- 1060 DATA 24,Printer timeout error,27,Printer is not on,57,Printer I/O error 57, 68,Printer unavailable,99,Printer error
- 1070 '-------------------------LIST THE FILE------------------------------
- 1080 VALID = TRUE: E = 1: FINISHED = FALSE: GO = TRUE
- 1090 IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
- 1100 WHILE L > 1 AND E < L AND NOT FINISHED
- 1110 LN = LEN (A$): E$ = ""
- 1120 FOR I = 22 TO 25: LOCATE I,1-8*MONO: PRINT CLEARR$;: NEXT
- 1130 IF LN > 2 THEN E$ = RIGHT$(A$,LN-2): E$ = LEFT$(E$,4): E = VAL(E$) ELSE E = 1
- 1140 IF E > L-1 THEN LOCATE INLINE-1,LEFT+8: PRINT "Invalid line number":E= 1
- 1150 IF E < 1 THEN E = 1
- 1160 LOCATE 25,LEFT-4: PRINT " SPACEBAR ENTER ";
- 1170 WHILE E < L AND NOT FINISHED
- 1180 LOCATE 24,1: PRINT
- 1190 IF MONO THEN LOCATE INLINE-1,61: PRINT ENDD$
- 1200 LOCATE INLINE+1,LEFT-5: PRINT E
- 1210 LOCATE INLINE+1,LEFT+1: PRINT ARRAY$(E);: IF MONO THEN LOCATE ,61: PRINT ENDD$
- 1220 A$ = INKEY$
- 1230 IF A$ = " " THEN GO = NOT GO
- 1240 IF A$ = CHR$(13) THEN FINISHED = TRUE ELSE FINISHED = FALSE
- 1250 WHILE NOT GO AND NOT FINISHED
- 1260 A$ = INKEY$
- 1270 IF A$ = " " THEN GO = NOT GO
- 1280 IF A$ = CHR$(13) THEN FINISHED = TRUE
- 1290 WEND 'TERMINATE PAUSE?
- 1300 E =E + 1: FOR I = 1 TO 70: NEXT
- 1310 WEND: 'OUT OF LINES OR QUIT?
- 1320 LOCATE 24: PRINT: PRINT
- 1330 WEND: 'LINES IN MEMORY?
- 1340 GOSUB 3180
- 1350 RETURN
- 1360 '-----------------------INSERT LINE--------------------------------
- 1370 VALID = TRUE: FINISHED = FALSE
- 1380 IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
- 1390 WHILE L > 1 AND VALID AND NOT FINISHED
- 1400 LN = LEN (A$)
- 1410 LOCATE 25,LEFT-4: PRINT STRING$(38,32);
- 1420 IF LN > 2 THEN E$ = RIGHT$(A$,LN-2)
- 1430 IF LN < 3 THEN LOCATE INLINE-1,LEFT+8: INPUT "Insert which line? ",E$
- 1440 E$ = LEFT$(E$,4): E% = VAL(E$): E = E%
- 1450 IF E$ = "" OR E < 1 OR E > L-1 THEN VALID = FALSE: IF E$<>"" THEN LOCATE INLINE-1,LEFT+8: PRINT "Invalid line number"
- 1460 WHILE VALID AND NOT FINISHED
- 1470 LOCATE 25,LEFT-4: PRINT " .q(uit ";
- 1480 GOSUB 3180
- 1490 WHILE NOT FINISHED
- 1500 LOCATE 23,LEFT-4: PRINT "Insert line";E;
- 1510 LOCATE INLINE,LEFT-5: PRINT E;: LOCATE ,LEFT: PRINT CHR$(34);: LOCATE ,LEFT: INPUT"",A$: GOSUB 3180
- 1520 GOSUB 3090:' LENGTH CHECK & SPACE STRIPPER
- 1530 IF A$ = ".Q" OR A$ = ".q" THEN FINISHED = TRUE
- 1540 IF NOT FINISHED THEN FOR I = L - 1 TO E STEP -1: ARRAY$(I+1) = ARRAY$ (I): NEXT
- 1550 IF NOT FINISHED THEN ARRAY$(E) = A$: L = L + 1: E= E + 1
- 1560 IF L > 200 THEN FINISHED = TRUE
- 1570 WEND: 'FINISHED?
- 1580 WEND: 'INVALID LINE?
- 1590 WEND 'LINES IN MEMORY?
- 1600 GOSUB 3180
- 1610 RETURN
- 1620 -----------------------DELETE LINE-------------------------------
- 1630 VALID = TRUE
- 1640 IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
- 1650 WHILE L > 1 AND VALID
- 1660 LN = LEN(A$)
- 1670 LOCATE 25,LEFT-4: PRINT " ";
- 1680 IF LN > 2 THEN E$ = RIGHT$(A$,LN-2)
- 1690 IF LN < 3 THEN LOCATE INLINE-1,LEFT+8: INPUT "Delete which line? ",E$
- 1700 E$ = LEFT$(E$,4)
- 1710 E% = VAL(E$): E = E%
- 1720 IF E < 1 OR E > L-1 OR E$ = "" THEN VALID = FALSE: IF E$ <> "" THEN LOCATE INLINE-1,LEFT+8: PRINT "Invalid line number"
- 1730 WHILE VALID
- 1740 LOCATE INLINE-1,LEFT+8: PRINT "Delete this? (Y/N) ": GOSUB 3180 : LOCATE INLINE,LEFT-5: PRINT E;: LOCATE ,LEFT+1: PRINT ARRAY$(E)
- 1750 A$ = ""
- 1760 WHILE A$ <> "Y" AND A$ <> "y" AND A$ <> "N" AND A$ <> "n"
- 1770 A$ = INKEY$
- 1780 WEND
- 1790 GOSUB 3180
- 1800 IF A$ = "y" OR A$ = "Y" THEN FOR I = E TO L-1: ARRAY$(I) = ARRAY$(I+1): NEXT: L = L - 1
- 1810 VALID = FALSE
- 1820 WEND: 'VALID LINE AND NOT FINISHED?
- 1830 WEND: 'LINES IM MEMORY?
- 1840 GOSUB 3180
- 1850 RETURN
- 1860 -----------------------SAVE FILE TO DISK---------------------------
- 1870 BADFILENAME = FALSE: FINISHED = FALSE: DIRECTORY = FALSE: DISKERROR =FALSE: E$ = "": ON ERROR GOTO 2340
- 1880 IF L = 1 THEN LOCATE INLINE-1,LEFT+11: PRINT "No lines in memory"
- 1890 WHILE L > 1 AND NOT BADFILENAME AND NOT FINISHED
- 1900 WHILE RIGHT$(A$,1) = " "
- 1910 A$ = LEFT$(A$,LEN(A$)-1)
- 1920 WEND
- 1930 LN = LEN(A$)
- 1940 IF LN > 2 THEN E$ = RIGHT$(A$,LN-2)
- 1950 IF E$ = ".d" OR E$ = ".D" THEN E$ = "": NAMEE$ = "": DIRECTORY = TRUE
- 1960 WHILE E$ = "" AND NOT FINISHED: 'NO FILE NAME GIVEN
- 1970 GOSUB 3180
- 1980 WHILE NAMEE$ <> "" AND E$ = ""
- 1990 LOCATE INLINE,LEFT: PRINT "Save as ";NAMEE$;"? (Y/N)": GOSUB 3180
- 2000 WHILE A$ <> "Y" AND A$ <> "y" AND A$ <> "N" AND A$ <> "n"
- 2010 A$ = INKEY$
- 2020 WEND
- 2030 IF A$ = "Y" OR A$ = "y" THEN E$ = NAMEE$
- 2040 IF A$ = "N" OR A$ = "n" THEN NAMEE$ = "": E$ = ""
- 2050 WEND
- 2060 WHILE (E$ = "" AND NOT FINISHED) OR DIRECTORY
- 2070 IF DIRECTORY THEN LOCATE 22,1-8*MONO: PRINT CLEARR$: LOCATE , 1-8*MONO: PRINT CLEARR$;: LOCATE 21,1: FILES DIR$: LOCATE 24: FOR I= 1 TO 6: PRINT :NEXT: GOSUB 3180: DIRECTORY = FALSE
- 2080 LOCATE 25,LEFT-4: PRINT " .d(irectory ";
- 2090 LOCATE INLINE,LEFT+1: INPUT "Save file name? ",A$
- 2100 GOSUB 3090: E$ = A$:' LENGTH CHECK AND SPACE REMOVER
- 2110 IF E$ = ".d" OR E$ = ".D" THEN DIRECTORY = TRUE ELSE DIRECTORY=FALSE
- 2120 IF E$ = "" THEN FINISHED = TRUE
- 2130 IF NOT FINISHED THEN GOSUB 3180
- 2140 WEND: 'GOT SOME NAME OR FINISHED?
- 2150 WEND
- 2160 GOSUB 2400: 'CHECK FILE NAME
- 2170 WHILE NOT FINISHED AND NOT BADFILENAME
- 2180 OPENING = TRUE: F$ = DD$ + E$
- 2190 OPEN F$ FOR OUTPUT AS #1
- 2200 OPENING = FALSE: I = 1
- 2210 WHILE I < L AND NOT FINISHED
- 2220 PRINT #1,CHR$(34);ARRAY$(I);CHR$(34): I = I + 1
- 2230 WEND
- 2240 IF NOT DISKERROR THEN NAMEE$=E$
- 2250 CLOSE
- 2260 ON ERROR GOTO 0
- 2270 FINISHED = TRUE
- 2280 WEND
- 2290 WEND
- 2300 GOSUB 3180
- 2310 ON ERROR GOTO 0
- 2320 RETURN
- 2330 '----------------------DISK OUTPUT ERROR--------------------------
- 2340 RESTORE 2380: FINISHED = TRUE: DISKERROR = TRUE
- 2350 READ ERRNUMBER,ERRMESSAGE$:IF ERR <> ERRNUMBER AND ERRNUMBER<>99 THEN 2350
- 2360 IF NOT DIRECTORY THEN GOSUB 3180
- 2370 LOCATE INLINE,LEFT+1: PRINT ERRMESSAGE$: BEEP: GOSUB 3180: IF DIRECTORY THEN DIRECTORY = FALSE: RESUME 2140 ELSE IF OPENING THEN RESUME 2240 ELSE RESUME 2230
- 2380 DATA 57,I/O error,61,Disk is full,70,Disk write protected,71, Disk not ready,72,Disk media error,99,Disk error
- 2390 ----------------------CHECK FILE NAME----------------------------
- 2400 BADFILENAME = FALSE: E = LEN(E$): DONE = FALSE
- 2410 IF E = 0 THEN BADFILENAME = -1: GOSUB 3180
- 2420 WHILE LEFT$(E$,1) = "." AND NOT BADFILENAME
- 2430 E = LEN(E$)
- 2440 IF E > 1 THEN E$ = RIGHT$(E$,E-1) :E = E - 1 ELSE BADFILENAME = -1
- 2450 WEND
- 2460 WHILE NOT BADFILENAME AND NOT DONE
- 2470 IF E > 12 THEN E = 12: E$ = LEFT$(E$,12)
- 2480 FOR I = 1 TO E
- 2490 B = ASC(MID$(E$,I,1))
- 2500 IF B > 126 OR B < 32 OR B = 34 OR B = 42 OR B = 43 OR B = 47 OR (B > 57 AND B< 64) OR B = 91 OR B = 93 OR B = 124 THEN BADFILENAME = -1: C = B
- 2510 NEXT
- 2520 IF BADFILENAME THEN GOSUB 3180:LOCATE INLINE,LEFT: PRINT CHR$(C); " is an illegal character"
- 2530 IF BADFILENAME THEN GOSUB 3180
- 2540 DONE = TRUE
- 2550 WEND
- 2560 RETURN
- 2570 '------------------------GET FILE FROM DISK-----------------------
- 2580 BADFILENAME = FALSE: FINISHED = FALSE: DIRECTORY = FALSE: DISKERROR= FALSE: E$ = "": ON ERROR GOTO 2890
- 2590 LN = LEN(A$)
- 2600 IF LN > 2 THEN E$ = RIGHT$(A$,LN-2) ELSE E$ = ""
- 2610 IF E$ = ".d" OR E$ = ".D" THEN E$ = " ": DIRECTORY = TRUE
- 2620 WHILE (E$ = "" AND NOT FINISHED) OR DIRECTORY: 'NO FILE NAME GIVEN
- 2630 GOSUB 3180
- 2640 IF DIRECTORY THEN LOCATE 22,1-8*MONO: PRINT CLEARR$: LOCATE,1-8*MONO: PRINT CLEARR$;: LOCATE 21,1:FILES DIR$: LOCATE 24: FOR I = 1 TO 6: PRINT: NEXT: GOSUB 3180: DIRECTORY = FALSE
- 2650 LOCATE 25,LEFT-4: PRINT " .d(irectory ";
- 2660 LOCATE INLINE,LEFT: INPUT "Get file name? ",A$
- 2670 GOSUB 3090: E$ = A$:' LENGTH CHECK AND SPACE REMOVER
- 2680 IF E$ = ".D" OR E$ = ".d" THEN DIRECTORY = TRUE
- 2690 IF E$ = "" THEN FINISHED = TRUE
- 2700 IF NOT FINISHED THEN GOSUB 3180
- 2710 WEND: 'GOT A NAME OR FINISHED?
- 2720 GOSUB 2400: 'CHECK FILE NAME
- 2730 WHILE NOT FINISHED AND NOT BADFILENAME
- 2740 OPENING = TRUE: F$ = DD$ + E$
- 2750 OPEN F$ FOR INPUT AS #1
- 2760 OPENING = FALSE
- 2770 L = 1
- 2780 WHILE NOT EOF(1)
- 2790 INPUT#1, ARRAY$(L): L = L + 1
- 2800 WEND
- 2810 IF NOT DISKERROR THEN NAMEE$= E$
- 2820 CLOSE
- 2830 FINISHED = TRUE
- 2840 WEND
- 2850 GOSUB 3180
- 2860 ON ERROR GOTO 0
- 2870 RETURN
- 2880 '--------------------------DISK INPUT ERROR----------------------
- 2890 RESTORE 2930: DISKERROR = TRUE: FINISHED = TRUE
- 2900 READ ERRNUMBER,ERRMESSAGE$:IF ERR<>ERRNUMBER AND ERRNUMBER <> 99 THEN 2900
- 2910 IF DIRECTORY AND ERR = 53 THEN ERRMESSAGE$ = "No files present"
- 2920 IF NOT DIRECTORY THEN GOSUB 3180
- 2930 LOCATE INLINE,LEFT+1: PRINT ERRMESSAGE$: BEEP: GOSUB 3180: IF DIRECTORY THEN DIRECTORY = FALSE: RESUME 2710 ELSE IF OPENING THEN RESUME 2840 ELSE RESUME 2800
- 2940 DATA 53,File not found,57,I/O error 57,64,Bad file name,71,Disk not ready, 72,Disk media error 72,99,Disk input error
- 2950 '---------------------CLEAR MEMORY-------------------------------
- 2960 A$ = ""
- 2970 IF L = 1 THEN A$="Y"
- 2980 WHILE A$ = ""
- 2990 GOSUB 3180
- 3000 LOCATE INLINE,LEFT+1: PRINT "Destroy the file in memory? (Y/N)"
- 3010 GOSUB 3180
- 3020 WHILE A$ <> "y" AND A$ <> "Y" AND A$ <> "N" AND A$ <> "n"
- 3030 A$ = INKEY$
- 3040 WEND
- 3050 WEND
- 3060 IF A$ = "Y" OR A$ = "y" THEN GOSUB 260 :L=1: ELSE GOSUB 3180
- 3070 RETURN
- 3080 '------------------LENGTH CHECK-------------------------------
- 3090 IF LEN(A$) > 34 THEN A$ = LEFT$(A$,34):LOCATE INLINE,LEFT-5: PRINT STRING$(40,32);: IF MONO THEN LOCATE INLINE-1,LEFT+1: PRINT A$; STRING$(20,32);: LOCATE INLINE-1,61: PRINT ENDD$
- 3100 WHILE RIGHT$(A$,1) = " "
- 3110 A$ = LEFT$(A$,LEN(A$)-1)
- 3120 WEND
- 3130 RETURN
- 3140 '-------------------MAIN PROMPT LINE------------------------------
- 3150 LOCATE 25,LEFT-4: PRINT ".e .l .d .i .s .g .p .c .q .h";
- 3160 RETURN
- 3170 --------------------SCROLL SCREEN---------------------------------
- 3180 LOCATE 23,1-8*MONO: PRINT CLEARR$: LOCATE 22,2-7*MONO: PRINT CLEARR$: LOCATE 24,1: PRINT: LOCATE 22,2-7*MONO: PRINT LINEE$: IF MONO THEN LOCATE INLINE-1,61: PRINT ENDD$
- 3190 RETURN
- 3200 '---------------HELP SCREEN-----------------------------
- 3210 CLS: GOSUB 3180: GOSUB 3150
- 3220 I = 2-20*MONO
- 3230 LOCATE 1,I: PRINT "The commands in this editor are:": PRINT
- 3240 LOCATE ,I: PRINT ".e edit a line"
- 3250 LOCATE ,I: PRINT ".l list the file"
- 3260 LOCATE ,I: PRINT ".d delete a line"
- 3270 LOCATE ,I: PRINT ".i insert lines"
- 3280 LOCATE ,I: PRINT ".s save file to disk"
- 3290 LOCATE ,I: PRINT ".g get file from disk"
- 3300 LOCATE ,I: PRINT ".p print file on printer"
- 3310 LOCATE ,I: PRINT ".c clear editor for new file"
- 3320 LOCATE ,I: PRINT ".q quit the editor"
- 3330 LOCATE ,I: PRINT ".h help screen"
- 3340 PRINT: LOCATE ,I: PRINT "Use the ";CHR$(26);" key on the right side of"
- 3350 LOCATE ,I: PRINT "the keyboard to copy over the quote"
- 3360 LOCATE ,I: PRINT "mark at the beginning of each line."
- 3370 LOCATE ,I:PRINT "See the manual for more information."
- 3380 RETURN
- 3390 '----COLD START INITIALIZATION------
- 3400 SCREEN 0,0,0,0: DEF SEG = 0: DIM ARRAY$(202): KEY OFF
- 3410 IF (PEEK (&H410) AND &H30) = &H30 THEN MONO =-1: FG=0: BG=7: WIDTH 80 ELSE MONO = 0: FG = 7: BG = 0: WIDTH 40
- 3420 COLOR FG,BG
- 3430 GOSUB 3780:I = 5-15*MONO
- 3440 LOCATE 3,I-2: PRINT "Which monitor do you have?"
- 3450 LOCATE 5,I: PRINT "1> IBM Monochrome Display": PRINT
- 3460 LOCATE ,I: PRINT "2> TV or other monitor": PRINT
- 3470 LOCATE ,I: PRINT "Please press 1 or 2";
- 3480 WHILE A$ <> ""
- 3490 A$ = INKEY$
- 3500 WEND
- 3510 WHILE A$ <> "1" AND A$ <> "2"
- 3520 A$=INKEY$
- 3530 WEND
- 3540 IF A$ ="2" THEN W = 40: MONO = 0 ELSE W = 80: MONO = -1
- 3550 LOCATE 12,I-2: PRINT "Select the display color:"
- 3560 LOCATE 14,I: PRINT "1> Dark printing/light background": PRINT
- 3570 LOCATE ,I: PRINT "2> Light printing/dark background": PRINT
- 3580 WHILE A$ <> ""
- 3590 A$ = INKEY$
- 3600 WEND
- 3610 LOCATE ,I: PRINT "Please press 1 or 2"
- 3620 WHILE A$ <> "1" AND A$ <> "2"
- 3630 A$ = INKEY$
- 3640 WEND
- 3650 IF A$ = "1" THEN FG = 0: BG = 7 ELSE FG = 7: BG = 0
- 3660 WHILE A$ <> ""
- 3670 A$ = INKEY$
- 3680 WEND
- 3690 LOCATE 21,I-2: PRINT "Do you have one disk": PRINT
- 3700 LOCATE ,I: PRINT "drive or two? (press 1 or 2)"
- 3710 WHILE A$ <> "1" AND A$ <> "2"
- 3720 A$ = INKEY$
- 3730 WEND
- 3740 DD = VAL(A$)
- 3750 COLOR FG,BG: WIDTH W
- 3760 RETURN
- 3770 '----MENU BORDER----
- 3780 CLS: LOCATE 1,1,0: FOR I=1 TO 900: NEXT: LF=1-MONO: R = 39-40*MONO: A$ = STRING$ (37-39*MONO,205)
- 3790 LOCATE 1,LF: PRINT CHR$(201);A$;CHR$(187): FOR I=2 TO 24: LOCATE I,LF: PRINT CHR$(186);: LOCATE ,R: PRINT CHR$(186);: NEXT: LOCATE 25,LF: PRINT CHR$(200);A$;CHR$(188);
- 3800 RETURN
- 3810 '----CHANGE DISKS----
- 3820 GOSUB 3780
- 3830 IF DD = 2 THEN LOCATE 6,17-20*MONO: PRINT "Please"
- 3840 IF DD=1 THEN LOCATE 8,4-20*MONO:PRINT "Please remove the program diskette"
- 3850 LOCATE 14+4*(DD=2),9-20*MONO: PRINT "Insert the data diskette": IF DD = 2 THEN LOCATE 14,12-20*MONO: PRINT "into disk drive B"
- 3860 LOCATE 23,7-20*MONO
- 3870 PRINT "Press space bar to continue"
- 3880 WHILE A$ <> " "
- 3890 A$ = INKEY$
- 3900 WEND
- 3910 RETURN
-